package cn.iocoder.yudao.hires.service.impl;

import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.hires.entity.ResumeSkillDO;
import cn.iocoder.yudao.hires.mapper.ResumeSkillMapper;
import cn.iocoder.yudao.hires.service.ResumeSkillService;
import cn.iocoder.yudao.hires.vo.ResumeSkillPageReqVO;
import cn.iocoder.yudao.hires.vo.ResumeSkillSaveReqVO;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;

import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;


/**
 * 简历-职业技能 Service 实现类
 *
 * @author 芋道源码
 */
@Service
@Validated
public class ResumeSkillServiceImpl implements ResumeSkillService {

    @Resource
    private ResumeSkillMapper skillMapper;

    @Override
    public Integer createSkill(ResumeSkillSaveReqVO createReqVO) {
        // 插入
        ResumeSkillDO skill = BeanUtils.toBean(createReqVO, ResumeSkillDO.class);
        skillMapper.insert(skill);
        // 返回
        return skill.getId();
    }

    @Override
    public void updateSkill(ResumeSkillSaveReqVO updateReqVO) {
        // 校验存在
        validateSkillExists(updateReqVO.getId());
        // 更新
        ResumeSkillDO updateObj = BeanUtils.toBean(updateReqVO, ResumeSkillDO.class);
        skillMapper.updateById(updateObj);
    }

    @Override
    public void deleteSkill(Integer id) {
        // 校验存在
        validateSkillExists(id);
        // 删除
        skillMapper.deleteById(id);
    }

    private void validateSkillExists(Integer id) {
        if (skillMapper.selectById(id) == null) {
            throw exception(new ErrorCode(500, "简历-职业技能不存在"));
        }
    }

    @Override
    public ResumeSkillDO getSkill(Integer id) {
        return skillMapper.selectById(id);
    }

    @Override
    public PageResult<ResumeSkillDO> getSkillPage(ResumeSkillPageReqVO pageReqVO) {
        return skillMapper.selectPage(pageReqVO);
    }

}